
package br.com.pi.SmartFast.model;

//importações
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;





/**
 *
 * @author Lídia
 */
public class PedidosDAO {

    Connection conn = null;//variável para receber a conexão

    //método para gravar os dados do pedido na banco de dados
    public void setGravarDados(Pedidos ped,int np){
        String sql = "Insert Into pedidos (Pedido_Fechado, Quantidade_Prod, ped_atendido, Data_hora, fk_mesa, fk_produtos," +
                 " Prod_pago,custo_produto, numero_pedido  ) Values (?,?,?,?,?,?,?,?,?)";//instruçao sql
        try {
            PreparedStatement stm = conn.prepareStatement(sql);//recebe a instrução sql
            stm.setBoolean(1, ped.isPedido_Fechado());//grava pedido fechado
            stm.setInt(2, ped.getQuantidade_prod());//grava quantidade do produto
            stm.setBoolean(3, ped.isPed_atendido());//grava pedido atendido
            stm.setString(4, ped.getData_hora());//grava a data
            stm.setInt(5, ped.getMesa().getCod_mesa());//grava a chave estrangeira (código da mesa)
            stm.setInt(6, ped.getProduto().getCodigo_prod());//grava chave estrangeira (código do produto)
            stm.setBoolean(7, ped.isProd_pago());//grava prduto pago
            stm.setFloat(8, ped.getCusto_produto());//grava custo do produto
            stm.setInt(9,np);//grava o nº do pedido

            stm.execute();//executa o statement
            stm.close();//fecha a conexão
        } catch (SQLException ex) {//tratamento de exceção
            Logger.getLogger(PedidosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }


    }

    //método para editar os pedidos
public void EditarPedidos(Pedidos prod){
        try{

            this.conn = ConexaoBancoDados.getConexaoMySql();//recebe a conexão com o banco de dados

            String sql = "Update pedidos set" +//instrução sql
                    " ped_atendido = ?" +
                    " where fk_mesa = ? and" +
                    " fk_produtos in(select id_produtos from produtos where fk_tipo_produto = ?)";

            PreparedStatement stm = (PreparedStatement) conn.prepareStatement(sql);//recebe a instrução sql

            
            stm.setBoolean(1, prod.isPed_atendido());
            stm.setInt(2, prod.getMesa().getCod_mesa());
            stm.setInt(3, prod.getProduto().getTipo_produto().getCodigo_tipo());

            stm.execute();//executa
            stm.close();//fecha a conexão

        }catch(Exception e){//tratamento de exceção
            
        }
    }

public void setEditarPedidoFechado(Pedidos ped){
        try {
            this.conn = ConexaoBancoDados.getConexaoMySql();
             String sql = "update pedidos set pedido_fechado = ? where fk_mesa = ? ";

             PreparedStatement stm = conn.prepareStatement(sql);

             stm.setBoolean(1, ped.isPedido_Fechado());
             stm.setInt(2, ped.getMesa().getCod_mesa());

             stm.execute();
             stm.close();

        } catch (SQLException ex) {
            Logger.getLogger(PedidosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }


}

public void setAbrirPedidoFechado(Pedidos ped){
        try {
            this.conn = ConexaoBancoDados.getConexaoMySql();
             String sql = "update pedidos set pedido_fechado = ? where fk_mesa = ? and prod_pago = ?";

             PreparedStatement stm = conn.prepareStatement(sql);

             stm.setBoolean(1, ped.isPedido_Fechado());
             stm.setInt(2, ped.getMesa().getCod_mesa());
             stm.setBoolean(3, ped.isProd_pago());

             stm.execute();
             stm.close();

        } catch (SQLException ex) {
            Logger.getLogger(PedidosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }


}

public void setPedidoPago(Pedidos ped){

    try {
            this.conn = ConexaoBancoDados.getConexaoMySql();
             String sql = "update pedidos set prod_pago = ? where fk_mesa = ?";

             PreparedStatement stm = conn.prepareStatement(sql);

             stm.setBoolean(1, ped.isProd_pago());
             stm.setInt(2, ped.getMesa().getCod_mesa());

             stm.execute();
             stm.close();

        } catch (SQLException ex) {
            Logger.getLogger(PedidosDAO.class.getName()).log(Level.SEVERE, null, ex);
        }

}


//método que recebe os dados da tabela 
public ResultSet getDadosTabela(String sql) {

    try{
           conn = ConexaoBancoDados.getConexaoMySql();
           PreparedStatement stm = (PreparedStatement) conn.prepareStatement(sql);
           ResultSet rs = stm.executeQuery();
           return rs;
    }catch(Exception e){
        e.getStackTrace();
        return null;
    }
    }
}
